package com.repair.controller;


import cn.hutool.core.bean.BeanUtil;
import com.repair.dto.AreaAddDto;
import com.repair.dto.AreaInfoDto;
import com.repair.entity.AreaInfo;
import com.repair.form.AreaAddForm;
import com.repair.form.AreaFindForm;
import com.repair.form.AreaUpdateForm;
import com.repair.param.AreaAddParam;
import com.repair.param.AreaFindParam;
import com.repair.param.AreaUpdateParam;
import com.repair.service.AreaInfoService;
import com.repair.util.JwtUtil;
import com.repair.util.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 维修区域表 前端控制器
 * </p>
 *
 * @author 小叶
 * @since 2024年04月03日
 */
@RestController
@RequestMapping("/areaInfo")
@Api(tags = "维修区域接口")
public class AreaInfoController {
    @Autowired
    private AreaInfoService areaInfoService;


    /**
     * 新增维修区域信息
     *
     * @param form 包含新增区域信息，类型为AreaAddForm
     *        token 新增区域的管理员token
     * @return 返回操作结果，包括操作是否成功和新增的区域信息
     */
    @PostMapping("/addAreaInfo")
    @ApiOperation("新增维修区域")
    public Result addAreaInfo(@RequestBody AreaAddForm form, @RequestHeader String token){
        Integer adminId = (Integer) JwtUtil.getData(token, "id");
        AreaAddDto dto= areaInfoService.addArea(BeanUtil.toBean(form, AreaAddParam.class),adminId);
        return Result.success("新增维修区域成功",dto);
    }

    /**
     * 修改维修区域信息
     * @param form 传递修改区域信息，包含修改区域id和修改后的区域名称
     * @param token 修改人的token
     * @return 返回修改的区域信息
     */
    @PostMapping("/updateAreaInfo")
    @ApiOperation("修改维修区域信息")
    public Result updateAreaInfo(@RequestBody AreaUpdateForm form,@RequestHeader String token){
        Integer updateId = (Integer) JwtUtil.getData(token, "id");
        AreaInfo info = areaInfoService.updateArea(BeanUtil.toBean(form, AreaUpdateParam.class),updateId);
        return Result.success("修改维修区域信息成功",info);
    }

    /**
     * 删除维修区域信息
     * @param areaId 要删除的维修区域id
     * @param token 删除的管理员token
     * @return
     */
    @PostMapping("/delAreaInfo")
    @ApiOperation("删除维修区域信息")
    public Result delAreaInfo(Integer areaId,@RequestHeader String token){
        Integer updateId = (Integer) JwtUtil.getData(token, "id");
        areaInfoService.delArea(areaId,updateId);
        return Result.success("删除维修区域成功",null);
    }

    /**
     * 根据id查询维修区域信息
     * @param areaId 要查询的维修区域id
     * @return
     */
    @GetMapping("/findAreaInfoById")
    @ApiOperation("根据id查询维修区域信息")
    public Result findAreaInfoById(Integer areaId){
        AreaInfoDto dto = areaInfoService.findAreaInfoById(areaId);
        return Result.success("根据id查询维修区域信息成功",dto);
    }

    /**
     * 条件查询维修区域
     * @param form 查询的条件信息
     * @return
     */
    @GetMapping("/findAreaInfoByCondition")
    @ApiOperation("条件查询维修区域")
    public Result findAreaInfoByCondition(AreaFindForm form){
        List<AreaInfo> list = areaInfoService.findAreaInfoByCondition(BeanUtil.toBean(form, AreaFindParam.class));
        return Result.success("根据条件查询维修区域成功",list);
    }





}

